#ifndef VECTEUR_H
#define VECTEUR_H

#include "point.h"
#include <QtOpenGL>
#include "math.h"

/*
 *  @autheur : LEMOUEL Florian
 *  @date : 03.04.2013
 *  @version 1.0 : création de la classe complète
 */


/*
 * Classe représentant une Vecteur
 */

class Vecteur
{
 //--------------------- Constructeurs et destructeur -------------------
public:

    //Constructeur par défault
    Vecteur();

    //Constructeur à deux paramètres
    Vecteur(const Point& ptOrigine, const Point& ptFin);

    //On construit un vecteur de la normale à partir de trois points. On oriente selon le sens trigonométrique.
    Vecteur(const Point& pt1, const Point& pt2, const Point& pt3);

    //Contructeur par recopie
    Vecteur(const Vecteur& vecteur);

    //Constructeur avec 3 valeurs en GLfloat
    Vecteur(GLfloat x, GLfloat y, GLfloat z);

    //Destructeur
    ~Vecteur();
    //----------------------------------------------------------------------
    //--------------------- Méthodes ---------------------------------------

    //----------------------------------------------------------------------
    //--------------------- Accesseurs -------------------------------------

    //On renvoie la norme du vecteur
    Point& getNorme();

    //On renvoie le produit vectoriel de deux vecteurs
    static Vecteur& produitVectoriel(const Vecteur& v1, const Vecteur& v2);

    //On renvoie le produit scalaire de deux vecteurs
    static Vecteur& produitScalaire(const Vecteur& v1, const Vecteur& v2);
    //----------------------------------------------------------------------
    //--------------------- Surcharge des opérateurs -----------------------

    //----------------------------------------------------------------------
    //--------------------- Attributs --------------------------------------
private:
    //Point d'origine du vecteur
    Point* _pointOrigine;

    //Point de la fin du vecteur
    Point* _pointFin;
    //----------------------------------------------------------------------
};

#endif //VECTEUR_H
